package com.woniuxy.config;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author: 马宇航
 * @Todo: 用来做 发布订阅模式下的 广播模式
 * @DateTime: 25/03/11/星期二 16:19
 * @Component: 成都蜗牛学苑
 * <img src="https://woniumd.oss-cn-hangzhou.aliyuncs.com/security/mayuhang/202503111618428.png"/>
 **/
@Configuration
public class PublishSubscribeConfig {
    //@Bean 就可以把这个方法的返回值，作为对象的创建，放到spring容器中，bean的名字就叫做 id=fanoutQueue1
    /*
        @Autowired 默认byType  这个就是DI依赖注入
        @Resource  默认byName  bean的id= fanoutQueue1
    */
    @Bean
    public Queue fanoutQueue1() {
        return new Queue("fanoutQueue1");
    }
    @Bean
    public Queue fanoutQueue2() {
        return new Queue("fanoutQueue2");
    }
    //创建交换机 fanoutExchange
    @Bean
    public FanoutExchange fanoutExchange() {
        return new FanoutExchange("fanoutExchange");
    }
    //需要绑定交换机和队列
    @Bean
    public Binding bindQueue1() {
        //参数解释： Builder后缀，就是用到的建造者模式，也可以一直点下去
        return BindingBuilder.bind(fanoutQueue1()).to(fanoutExchange());
    }
    @Bean
    public Binding bindQueue2() {
        //参数解释： Builder后缀，就是用到的建造者模式，也可以一直点下去
        return BindingBuilder.bind(fanoutQueue2()).to(fanoutExchange());
    }
}
